package com.zyf.wjy.service;

import com.zyf.wjy.dao.FieldDao;
import com.zyf.wjy.entity.Field;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 地块服务类
 */
@Service
public class FieldService {
    
    @Autowired
    private FieldDao fieldDao;
    
    /**
     * 查询所有地块
     */
    public List<Field> findAll() {
        return fieldDao.findAll();
    }
    
    /**
     * 根据ID查询
     */
    public Field findById(Long id) {
        return fieldDao.findById(id);
    }
    
    /**
     * 根据地块编号查询
     */
    public Field findByFieldCode(String fieldCode) {
        return fieldDao.findByFieldCode(fieldCode);
    }
    
    /**
     * 根据状态查询
     */
    public List<Field> findByStatus(Integer status) {
        return fieldDao.findByStatus(status);
    }
    
    /**
     * 批量保存地块
     */
    public List<Field> saveAll(List<Field> fields) {
        return fields.stream()
            .map(this::save)
            .toList();
    }
    
    /**
     * 保存地块
     */
    public Field save(Field field) {
        if (field.getId() == null) {
            field.setCreateTime(LocalDateTime.now());
            field.setStatus(0); // 默认闲置
        }
        return fieldDao.save(field);
    }
    
    /**
     * 删除地块
     */
    public boolean deleteById(Long id) {
        return fieldDao.deleteById(id);
    }
    
    /**
     * 批量删除
     */
    public boolean deleteByIds(List<Long> ids) {
        return fieldDao.deleteByIds(ids);
    }
    
    /**
     * 更新地块种植信息
     */
    public void updatePlanting(Long fieldId, Long cropId, String cropName) {
        Field field = fieldDao.findById(fieldId);
        if (field != null) {
            field.setCurrentCropId(cropId);
            field.setCurrentCropName(cropName);
            field.setStatus(1); // 使用中
            fieldDao.save(field);
        }
    }
    
    /**
     * 清空地块种植信息
     */
    public void clearPlanting(Long fieldId) {
        Field field = fieldDao.findById(fieldId);
        if (field != null) {
            field.setCurrentCropId(null);
            field.setCurrentCropName(null);
            field.setStatus(0); // 闲置
            fieldDao.save(field);
        }
    }
}

